\chapter{Použité technologie}
Použité technologie vycházejí z kapitoly \nameref{chap:analyza}, přesněji z nefunkčních požadavků této kapitoly. K implementaci aplikace Visualizer jsou použity výhradně technologie a nástroje společnosti Microsoft. Tyto technologie realizují otevřené standardy XML a XPath.

\section{Technologie .NET}
Dominantní technologií společnosti Microsoft na poli vývoje aplikací je bezpochyby platforma .NET\footnote{.NET Framework - \href{NET}{http://www.microsoft.com/NET}}, která v sobě zapouzdřuje velké množství současně používaných technologií. Tato platforma může být použita na jakýchkoliv typech zařízení podporujících operační systémy z rodiny Windows.

\noindent
Právě s ohledem na cílový typ zařízení je nutné rozlišit tuto platformu na tři části, které dohromady tvoří .NET:
\begin{itemize}
\item .NET Framework
\item .NET Compact Framework
\item .NET Micro Framework
\end{itemize}

\section{.NET Framework 3.5}
Hlavní částí platformy .NET je komponenta .NET Framework. Tento framework poskytuje podmínky pro spuštění aplikací vystavěných na platformě .NET, tedy zajišťuje prostředí pro~jejich běh.

Tento framework umožňuje rychlou tvorbu aplikací připojených k datům, s nimiž jsou koncoví uživatelé velmi spokojeni. Poskytuje totiž stavební bloky (\emph{prefabrikovaný software}) pro řešení častých programátorských úkolů. Připojené aplikace využívající .NET Framework efektivně modelují procesy podnikatelské sféry a usnadňují integraci systémů v heterogenních prostředích.

Visual Studio a .NET Framework společně snižují potřebu každodenního psaní programového kódu, zkracují čas vývoje a dovolují vývojářům soustředit se na řešení vlastního problému. .NET Framework 3.5 vychází z verze 3.0 a vylepšuje takové oblasti jako knihovnu základních tříd, Windows Workflow Foundation, Windows Communication Foundation, \\Windows Presentation Foundation a Windows CardSpace.

\section {Programovací jazyk C\#}
C\# je vysokoúrovňový objektově orientovaný programovací jazyk vyvinutý společně s .NET Framework.  Tento jazyk čerpá z programovajích jazyků C a Java. C\# byl schválen standardizačními komisemi organizací ECMA\footnote{ECMA - společnost zabývající se standardizací informačních a telekuminakčních technologií} a ISO\footnote{ISO - Mezinárodní organizace pro normalizaci}.

\section{XAML - Extensible Application Markup Language}
Technologie XAML\cite{xamlhome} podstatně rozšiřuje možnosti tvorby uživatelského rozhraní na platformě .NET. Poprvé se o XAML začalo mluvit s vývojem .NET 3.0 Frameworku. Hlavní myšlenkou této technologie je oddělit prezentační vrstvu od bussines vrstvy aplikace. Dokument XAML je derivátem XML dokumentu. Technologii XAML si lze představit jako kombinaci XML souborů a parciálních tříd, které jsou v pozadí za těmito soubory. Díky této skutečnosti je usnadněno psaní prezentační vrstvy aplikace. Velkou výhodou XAML je jeho přenositelnost v rámci .NET. Současné technologie, které umožňují definovat pomocí XAML souborů podobu a strukturu uživatelského rozhraní, jsou frameworky WPF a Silverlight.

Pro zpracování XAML souborů je nutná jejich kompilace. Soubory XAML se proto kompiluji do BAML souborů. Tyto BAML\footnote{BAML - Binary Application Markup Language}  soubory se načítají do spouštěné aplikace, kde se dále zpracovávají.

XAML je ucelený systém pro tvorbu uživatelských rozhraní, který umožňuje definovat nejen rozmístění grafických prvků v aplikaci, ale také jejich styly a vlastnosti, využívat jazykových souborů, ošetřovat a vyvolávat události a reagovat na ně. Pro všechny tyto vlastnosti se začíná tato technologie prosazovat - představuje totiž velice modulární prvek, který je snadné konfigurovat.

Pro větší názornost je na obrázcích \ref{fig:xaml} a \ref{fig:class} uveden příklad propojení XAML dokumentu s třídou \verb MyPageCode . V XAML je odkazováno na tuto třídu a je zde nadefinováno tlačítko typu \verb Button , pro který je nastavena událost \verb Click . Tato událost je zpracována ve třídě \verb MyPageCode  metodou \verb ClickHandler .

\begin{figure}[!h]
\lstset{captionpos=b}
\begin{lstlisting}[frame=single]
<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="MyNamespace.MyPageCode">
  <Button Click="ClickHandler" Margin="10,20,10,30"
         Background="Blue">Click Me!
  </Button>
</Page>
\end{lstlisting}
\caption{Ukázka XAML dokumentu}
\label{fig:xaml}
\end{figure}

\clearpage
\lstset{language=C++}
\begin{figure}[!h]
\begin{lstlisting}[frame=single]
namespace MyNamespace
{
  public class MyPageCode
  {
    void ClickHandler(object sender, RoutedEventArgs e)
    {
      Button b = e.Source as Button;
      b.Background = Brushes.Red;
    }
  }
}
\end{lstlisting}
\caption{Třída MyPageCode}
\label{fig:class}
\end{figure}

\section {WPF - Windows Presentation Foundation}
WPF\cite{wpfhome} je konkureční technologie pro psaní grafických aplikací k technologii Windows Forms. Windows Forms představují standardní cestu pro psaní aplikací s uživatelským rozhraním. Framework WPF překonává tuto standardní technologii množstvím nabízených komponent a možnostmi jejich použití. WPF je podporováno od frameworku .NET 3.0. Od začátku je zaměřeno pro psaní uživatelsky bohatých aplikací. WPF využívá XAML dokumentu pro~tvorbu uživatelského rozhraní. Tímto krokem se usnadnil vývoj graficky bohatých aplikací.

\noindent
WPF obohacuje uživatelské rozhraní o tyto prvky:
\begin{itemize}
\item \textbf{vektorová grafika} - umožňuje graficky bezeztrátovou změnu velikosti prvků, barevné gradienty, používání geometrických tvarů
\item \textbf{animace} - rotace, transformace, animace barev, 3D animace a mnoho dalších
\item \textbf{multimédia} - jednoduchá práce s audiem a videem (avi, mpeg, wmv)
\item \textbf{efekty} - stíny, záře, rozostření, průhlednost nebo zrcadlení
\item \textbf{interaktivní 3D aplikace} - poskytuje základní prvky 3D grafiky zaměřené na multimédia, dokumenty a uživatelská rozhraní
\item \textbf{data binding} - provázání dat v aplikaci
\end{itemize}
~~~~~\textbf{\vdots} \\

Tento framework je ohleduplný na využívání systémových prostředků - všechny jeho grafické prvky využívají API\footnote{Application Programming Interface - rozhraní pro programování aplikací} \verb DirectX . Tato vlastnost zaručuje malé využití procesoru - o~renderování se stará grafická karta.

WPF je prozatím ve dvou verzích a to WPF 3.0 pro .NET Framework 3.0 a WPF 3.5 pro~.NET Framework 3.5. Rozdíly mezi těmito verzemi nejsou značné, avšak některé významné jsou uvedeny v přehledu nových vlastností:
\begin{itemize}
\item oprava kritických chyb verze 3.0
\item komponenty typu Window jsou hardwarově akcelerovány
\item podpora interaktivního zobrazení 2D prvků ve 3D prostoru
\item prvek typu TextBox podporuje částečně operaci Zpět (\emph{Undo})
\item prvek typu RichTextBox podporuje plně operaci Zpět (\emph{Undo})
\item vylepšená podpora validace dat při jejich načítání
\end{itemize}

\noindent
Pro demonstraci možností WPF platformy je přiložen následující screenshot \ref{fig:wpf}

\begin{figure}[ht]
\begin{center}
\includegraphics[width=15cm]{figures/wpf.png}
\caption {Demonstrativní ukázka WPF aplikace}
\label{fig:wpf}
\end{center}
\end{figure}








